// 请根据每日 气温 列表，重新生成一个列表。对应位置的输出为：要想观测到更高的气温，至少需要等待的天数。如果气温在这之后都不会升高，请在该位置用 0 来代替。
// 思路，单调栈

function dailyTemperatures(temperatures) {
    let stack = [0]
    let result = new Array(temperatures.length).fill(0)
    for (let i = 0; i < temperatures.length; i++) {
        while (stack.length && temperatures[i] > temperatures[stack[0]]) {
            let index = stack.shift()
            result[index] = i - index
        }        
        stack.unshift(i)
    }
    return result
}

let temperatures = [73, 74, 75, 71, 69, 72, 76, 73]
console.log(dailyTemperatures(temperatures))